package com.loooooo.pm2024.modules.pm.selector;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.loooooo.pm2024.config.BigIDListSerialize;
import com.loooooo.pm2024.data.BaseSelector;
import com.loooooo.pm2024.modules.pm.model.Issue;

import java.io.Serializable;
import java.util.List;

public class IssueSelector extends BaseSelector<Issue> implements Serializable {
    public IssueSelector(){
        super(new Issue());
    }

    private Integer withTaskList;
    private Integer withCommentList;
    private Integer withAttachmentList;
    private Integer withChildren;


    @JsonSerialize(using = BigIDListSerialize.class)
    private List<Long> parentIdList;

    private Long approvedAfter;
    private Long approvedBefore;
    private Long publishedAfter;
    private Long publishedBefore;
    private Long committedAfter;
    private Long committedBefore;

    private Long expectedFinishAfter;
    private Long expectedFinishBefore;

    private Integer timeout;

    private TaskSelector existTaskSelector;

    public Long getExpectedFinishAfter() {
        return expectedFinishAfter;
    }

    public void setExpectedFinishAfter(Long expectedFinishAfter) {
        this.expectedFinishAfter = expectedFinishAfter;
    }

    public Long getExpectedFinishBefore() {
        return expectedFinishBefore;
    }

    public void setExpectedFinishBefore(Long expectedFinishBefore) {
        this.expectedFinishBefore = expectedFinishBefore;
    }

    public Long getCommittedAfter() {
        return committedAfter;
    }

    public void setCommittedAfter(Long committedAfter) {
        this.committedAfter = committedAfter;
    }

    public Long getCommittedBefore() {
        return committedBefore;
    }

    public void setCommittedBefore(Long committedBefore) {
        this.committedBefore = committedBefore;
    }

    public Long getApprovedAfter() {
        return approvedAfter;
    }

    public void setApprovedAfter(Long approvedAfter) {
        this.approvedAfter = approvedAfter;
    }

    public Long getApprovedBefore() {
        return approvedBefore;
    }

    public void setApprovedBefore(Long approvedBefore) {
        this.approvedBefore = approvedBefore;
    }

    public Long getPublishedAfter() {
        return publishedAfter;
    }

    public void setPublishedAfter(Long publishedAfter) {
        this.publishedAfter = publishedAfter;
    }

    public Long getPublishedBefore() {
        return publishedBefore;
    }

    public void setPublishedBefore(Long publishedBefore) {
        this.publishedBefore = publishedBefore;
    }

    public Integer getWithTaskList() {
        return withTaskList;
    }

    public void setWithTaskList(Integer withTaskList) {
        this.withTaskList = withTaskList;
    }

    public Integer getWithCommentList() {
        return withCommentList;
    }

    public void setWithCommentList(Integer withCommentList) {
        this.withCommentList = withCommentList;
    }

    public Integer getWithAttachmentList() {
        return withAttachmentList;
    }

    public void setWithAttachmentList(Integer withAttachmentList) {
        this.withAttachmentList = withAttachmentList;
    }


    public TaskSelector getExistTaskSelector() {
        return existTaskSelector;
    }

    public void setExistTaskSelector(TaskSelector existTaskSelector) {
        this.existTaskSelector = existTaskSelector;
    }

    public Integer getTimeout() {
        return timeout;
    }

    public void setTimeout(Integer timeout) {
        this.timeout = timeout;
    }

    public Integer getWithChildren() {
        return withChildren;
    }

    public void setWithChildren(Integer withChildren) {
        this.withChildren = withChildren;
    }

    public List<Long> getParentIdList() {
        return parentIdList;
    }

    public void setParentIdList(List<Long> parentIdList) {
        this.parentIdList = parentIdList;
    }
}
